#ifndef BUILTIN_EXT_H
#define BUILTIN_EXT_H

#include "extension.h"
#include <stdio.h>
#include <math.h>

// 内置类型扩展需要通过指针包装（C语言限制）
// int类型的扩展函数
DEFINE_EXTENSION(int, print, void);                  // 打印int值
DEFINE_EXTENSION(int, add, int, int other);          // 加法
DEFINE_EXTENSION(int, is_even, bool);                // 判断偶数

// float类型的扩展函数
DEFINE_EXTENSION(float, print, void);                // 打印float值
DEFINE_EXTENSION(float, multiply, float, float other); // 乘法
DEFINE_EXTENSION(float, is_positive, bool);          // 判断正数

// int类型扩展实现
void int_print(int* self) {
    printf("整数值: %d\n", *self);
}

int int_add(int* self, int other) {
    return *self + other;
}

bool int_is_even(int* self) {
    return (*self % 2) == 0;
}

// float类型扩展实现
void float_print(float* self) {
    printf("浮点值: %.2f\n", *self);
}

float float_multiply(float* self, float other) {
    return *self * other;
}

bool float_is_positive(float* self) {
    return *self > 0;
}

#endif // BUILTIN_EXT_H
